﻿using System;
using System.Collections.Generic;
using Scommesse.Model;
using System.Drawing;

namespace Scommesse.Presenters.Adapters
{
    class EventoAdapter : IComposite
    {
        private readonly Evento _evento;
        private readonly Color _backColor;
        private readonly Color _foreColor;
        private readonly Font _font;

        public EventoAdapter(Evento evento)
        {
            _evento = evento;
            _backColor = Color.Empty;
            _foreColor = Color.Empty;
        }

        public EventoAdapter(Evento evento, Font font)
        {
            _evento = evento;
            _backColor = Color.Empty;
            _foreColor = Color.Empty;
            _font = font;
        }

        public EventoAdapter(Evento evento, Color backColor, Color foreColor, Font font)
        {
            if (evento == null)
            {
                throw new ArgumentNullException("Evento!");
            }
            _evento = evento;
            _backColor = backColor;
            _foreColor = foreColor;
            _font = font;
        }

        public Evento Evento
        {
            get { return _evento; }
        }

        public Color BackColor
        {
            get { return _backColor; }
        }

        public Color ForeColor
        {
            get { return _foreColor; }
        }

        public string FullName
        {
            get
            {
                return _evento.CompetitoreA + " - " + _evento.CompetitoreB + " @ " + String.Format("{0:dd/MM/yyyy HH:mm}", _evento.DataOra)
                         + " | " + _evento.Competizione.Nome + " | " + _evento.Competizione.Categoria.Nome;
            }
        }

        public IEnumerable<IEntity> SubEntities
        {
            get
            {
                List<IEntity> subEntities = new List<IEntity>();
                foreach (Tipologia t in _evento.Quote.Keys)
                {
                    TipologiaAdapter tAdapter = new TipologiaAdapter(t,_evento);

                    subEntities.Add(tAdapter);
                }
                return subEntities;
            }
        }

        public Font Font
        {
            get { return _font; }
        }
    }
}
